﻿using System;
using System.Windows.Forms;
using RMS.Common;
using RMS.DB;

namespace RMS
{
    public partial class DialogStoneProperties : IChangeFont
    {
        private readonly ConfigurationMng configurationMng = new ConfigurationMng();
        private readonly string type;
        private int id;
        private string msg = "";

        public DialogStoneProperties()
        {
            InitializeComponent();
        }

        public DialogStoneProperties(string _type)
        {
            InitializeComponent();
            type = _type;
        }

        public string result
        {
            get
            {
                return txtName.Text.Trim();
            }
        }

        private void BindDataGrid()
        {
            if (type.Equals(Constants.StoneType))
            {
                Text = "Quản lý loại đá quý";
                dataGridView1.DataSource = configurationMng.GetAllItems(Constants.StoneType);
                label1.Text = "Loại đá";
                msg = "Bạn phải nhập tên loại đá.";
            }
            if (type.Equals(Constants.ShapeType))
            {
                Text = "Quản lý hình dạng đá";
                dataGridView1.DataSource = configurationMng.GetAllItems(Constants.ShapeType);
                label1.Text = "Hình dạng";
                msg = "Bạn phải nhập hình dạng đá.";
            }
            if (type.Equals(Constants.CutType))
            {
                Text = "Cut";
                dataGridView1.DataSource = configurationMng.GetAllItems(Constants.CutType);
                label1.Text = "Cut";
                msg = "Bạn phải nhập vào ô trống";
            }
            if (type.Equals(Constants.CertType))
            {
                Text = "Quản lý loại chứng chỉ";
                dataGridView1.DataSource = configurationMng.GetAllItems(Constants.CertType);
                label1.Text = "Loại chứng chỉ";
                msg = "Bạn phải nhập loại chứng chỉ.";
            }
            if (type.Equals(Constants.ColorType))
            {
                Text = "Quản lý màu sắc";
                dataGridView1.DataSource = configurationMng.GetAllItems(Constants.ColorType);
                label1.Text = "Màu";
                msg = "Bạn phải nhập tên màu.";
            }
            if (type.Equals(Constants.ClarityType))
            {
                Text = "Quản lý độ trong";
                dataGridView1.DataSource = configurationMng.GetAllItems(Constants.ClarityType);
                label1.Text = "Độ trong";
                msg = "Bạn phải nhập độ trong.";
            }
            dataGridView1.ClearSelection();
            txtName.Focus();
        }


        private void button1_Click(object sender, EventArgs e)
        {
            DialogResult = DialogResult.Cancel;
            Close();
        }

        private void btnOK_Click(object sender, EventArgs e)
        {
            if (result == "")
            {
                MessageBox.Show("Hãy chọn một giá trị!", "Chú ý");
                return;
            }
            DialogResult = DialogResult.OK;
            Close();
        }

        private void DialogCategory_Load(object sender, EventArgs e)
        {
            dataGridView1.AutoGenerateColumns = false;
            BindDataGrid();
        }

        private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                if (row.Selected)
                {
                    txtName.Text = Convert.ToString(row.Cells[0].Value);
                }
            }
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txtName.Text.Trim()))
            {
                MessageBox.Show(msg, "Chú ý");
                return;
            }
            if (type.Equals(Constants.StoneType))
                configurationMng.AddItem(Constants.StoneType, txtName.Text.Trim());
            if (type.Equals(Constants.ShapeType))
                configurationMng.AddItem(Constants.ShapeType, txtName.Text.Trim());
            if (type.Equals(Constants.CutType))
                configurationMng.AddItem(Constants.CutType, txtName.Text.Trim());
            if (type.Equals(Constants.CertType))
                configurationMng.AddItem(Constants.CertType, txtName.Text.Trim());
            if (type.Equals(Constants.ColorType))
                configurationMng.AddItem(Constants.ColorType, txtName.Text.Trim());
            if (type.Equals(Constants.ClarityType))
                configurationMng.AddItem(Constants.ClarityType, txtName.Text.Trim());
            BindDataGrid();
            SelectAddedRow(txtName.Text.Trim());
        }
        private void SelectAddedRow(string name)
        {
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                if (name == Convert.ToString(row.Cells[0].Value))
                {
                    row.Cells[0].Selected = true;
                    row.Selected = true;
                    return;
                }
            }
        }

        private void btnUpdate_Click(object sender, EventArgs e)
        {
            string id = "";
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                if (row.Selected)
                {
                    id = Convert.ToString(row.Cells[1].Value);
                }
            }
            if (string.IsNullOrEmpty(id))
            {
                MessageBox.Show("Bạn phải chọn giá trị muốn cập nhật.", "Chú ý");
                return;
            }
            if (configurationMng.UpdateItem(Convert.ToInt32(id), txtName.Text.Trim()))
            {
                BindDataGrid();
                MessageBox.Show("Cập nhật thành công!", "Chú ý");
            }
        }

        private void btnDel_Click(object sender, EventArgs e)
        {
            string id = "";
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                if (row.Selected)
                {
                    id = Convert.ToString(row.Cells[1].Value);
                }
            }
            if (string.IsNullOrEmpty(id))
            {
                MessageBox.Show(Constants.Msg.ChooseOneValue, "Chú ý");
                return;
            }
            if (MessageBox.Show(Constants.Msg.ConfirmDelete, "Chú ý", MessageBoxButtons.YesNo) == DialogResult.Yes)
                if (configurationMng.DeleteItem(Convert.ToInt32(id)))
                {
                    MessageBox.Show("Xóa thành công!", "Chú ý");
                    BindDataGrid();
                    txtName.Text = "";
                }
        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                if (row.Cells[0].Selected)
                {
                    txtName.Text = Convert.ToString(row.Cells[0].Value);
                    row.Selected = true;
                    return;
                }
            }
        }

        private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            dataGridView1_CellClick(null, null);
            this.DialogResult = DialogResult.OK;
            this.Close();
        }
    }
}
